package com.msda.service.room;

import com.msda.pojo.dto.PageDTO;
import com.msda.pojo.dto.order.AuditCancellationDTO;
import com.msda.pojo.dto.order.AuditReservationDTO;
import com.msda.pojo.entity.order.Cancellation;
import com.msda.pojo.entity.order.Order;
import com.msda.pojo.entity.order.Reservation;
import com.msda.pojo.entity.requirement.NoticeMessage;
import com.msda.pojo.vo.ReservationVO;

import java.util.List;

public interface OrderService {
    //提交订单
    String submitOrder(Order order);

    //根据id获取订单
    Order getOrderById(String orderId);

    //根据id获取预订单
    Reservation getReservationById(String reservationId);

    //取消未支付订单
    Object cancelOrder(String orderId);

    //获得所有订单条数
    Long getAllOrderCount(int paymentStatus);

    List<Order> getPageOrder(int paymentStatus,PageDTO pageDTO);

    Long getAllReservationCount(int status);

    List<Reservation> getPageReservation(int status,PageDTO pageDTO);


    String payOrder(String orderId) throws IllegalAccessException;

    Object auditReservation(AuditReservationDTO auditReservationDTO);

    void generateReservation(Order order) throws IllegalAccessException;


    String submitCancelReservation(Cancellation cancellation);

    Cancellation getCancellationById(String cancellationId);

    Object auditCancellation(AuditCancellationDTO auditCancellationDTO);

    Long getAllCancellationCount(int status);

    List<Cancellation> getPageCancellation(int status, PageDTO pageDTO);

    Order getUnpaidOrder(String customerId);

    List<NoticeMessage> noticeMessage();

    Object setMessageReadStatus(String id, boolean status);

    Object setAllMessageReadStatus(boolean status);

    NoticeMessage getMessageReadStatus(String id);

    Long getAllMessageCount();

    List<NoticeMessage> getPageMessage(PageDTO pageDTO);

    List<Order> getPageIncompleteOrder(String customerId, PageDTO pageDTO);

    List<Reservation> getPageReservationByCustomerId(String customerId, PageDTO pageDTO);

    Object staffDeleteReservation(String reservationId);

    Object customerGetOrderExpired(String customerId);

    Object customerDeleteOrderExpired(String customerId);

    ReservationVO getReservationRelateDetail(String reservationId);



//    Integer testRabbitMQ();


}
